/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"D727769B-0E5F-401B-AFDE-AE04F29B11D6",variableType:4}
 */
var f_cuenta_cyb = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"86B7E767-410B-4A4C-97CD-EFABEC70FE18",variableType:4}
 */
var f_banco_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"EC1F02E2-CECE-4FB2-AE8D-AB2A8E52EE45",variableType:4}
 */
var f_valor_id = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"274FB786-4CA4-490C-9BFE-8116139F347E",variableType:93}
 */
var fecha_dia = new Date();

/**
 *  @type {JSFoundSet<db:/infocom/movim_cyb>} 
 * 
 * @properties={typeid:35,uuid:"4C0F9BD3-A078-487D-A208-E5ACB18248BF",variableType:-4}
 */
var fs_movim_ant = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'movim_cyb');

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"4E826F88-9E8B-430D-8833-6D02156B6B58"}
 */
var nro_desde = null;

/**
 *
 * @properties={typeid:24,uuid:"B4C3FD26-F542-4565-B93D-2E9668D39FA4"}
 */
function salir() 
{
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true);
}

/**
 *
 * @properties={typeid:24,uuid:"82C94101-B879-4A7C-AA4B-23A8BF2560F3"}
 * @AllowToRunInFind
 */
function iniciar() 
{
	nro_desde=' ';
	cheque_nro=' ';
	f_valor_id=null;    //  07/03/2012
	f_cuenta_cyb=null;  //  07/03/2012
	f_banco_id=null;    //  07/03/2012
	forms.cheques_canje_2.concepto=null;
	forms.cheques_canje_2.solicitante=null;
	databaseManager.revertEditedRecords();
	databaseManager.setAutoSave(true);   // porque si no da error en el find
	var estado_find=forms.cheques_canje.controller.find();
	if (estado_find==false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Falló la busqueda inicial de cheques','OK')
		return;
	}
	forms.cheques_canje.cheque_id=0;  // buscar algo que no existe para salir del find.
	forms.cheques_canje.controller.search();
	
	estado_find=forms.cheques_canje_2.controller.find();
	if (estado_find==false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','NO blanqueó nuevo cheque','OK')	
		return;
	}
	forms.cheques_canje_2.cheque_id=0;  // buscar algo que no existe para salir del find.
	forms.cheques_canje_2.controller.search();
	
	forms.cheques_canje_2.concepto=null;
	forms.cheques_canje_2.solicitante=null;
	
	elements.nro_desde.editable=true;       
	elements.f_valor_id.editable=true;        
	elements.f_cuentas_cyb_id.editable=true;  
	elements.f_banco_id.editable=true; 
	return
}

/**
 *
 * @properties={typeid:24,uuid:"9083A13A-DD75-4381-8D8E-D1F442F9E787"}
 * @AllowToRunInFind
 */
function buscar() 
{
	if (nro_desde != null)
	{
		if (f_valor_id==null)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar tipo de valor','OK')
			return false;
		}
		databaseManager.revertEditedRecords();
		databaseManager.setAutoSave(true);   // porque si no da error en el find
	//  FIND
		forms.cheques_canje.controller.loadAllRecords();
		var estado_find= forms.cheques_canje.controller.find();
		if (estado_find==false)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Falló búsqueda del cheque','OK')	
			return false;
		}
	//  RANGO a BUSCAR
		cheque_nro=nro_desde;
		valor_id=f_valor_id;
		
		if (f_banco_id == null && f_cuenta_cyb == null)  // debe informar alguno
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta o banco','OK')
			return false; 
		}
		if (f_cuenta_cyb != null)
			cuentas_cyb_id=f_cuenta_cyb;
		else
			banco_id=f_banco_id;
	// SEARCH
		var found = forms.cheques_canje.controller.search()
		if (found == 0)
		{	
			globals.DIALOGS.showWarningDialog('Aviso','No existe cheque con esas características','OK')
			iniciar();
			return false; 
		} 
		if (found != 1)
		{ // hay mas de uno
			globals.DIALOGS.showWarningDialog('Aviso', 'Hay más de un cheque con esas características'	,'OK')
			iniciar();
			return false;
		}
		else
		{ // hay uno solo 
			f_valor_id=valor_id;
			f_banco_id=banco_id;
			f_cuenta_cyb=cuentas_cyb_id;
			//  debe tener estado "entregado en pago=2" o "emitido=5"
			if (estado!=globals.zconf_chq_entregado_pago && estado!=globals.zconf_chq_emitido)   // 03/04/2012
			{   
				var estado_texto=globals.TabDetalles_Texto('estado_cheque',estado)
				if (estado_texto == false) // si vuelve con false=fallo el find
				   return false;
				if (estado_texto != null)
				{
					globals.DIALOGS.showWarningDialog('Aviso','El Cheque tiene estado ' + estado_texto	 ,'OK')
				}
				else
				{
					globals.DIALOGS.showWarningDialog('Aviso','Falta cargar descripción del estado ' + estado +' en Tablas_detalle','OK')
		 		}
				iniciar();
				return false;
			}
		//foundset fs_movim_ant fue definido como variable del form		
		//var fs_movim_ant=databaseManager.getFoundSet(controller.getServerName(),'movim_cyb')
			estado_find=fs_movim_ant.find();
			if (estado_find==false)
			{
				globals.DIALOGS.showWarningDialog('Aviso','Falló la búsqueda en movimientos del cheque a canjear','OK')
				return false;
			}
	        // lo busca aqui y no en confirmar porque con autosave(false) no puede buscar
			fs_movim_ant.cheque_id=cheque_id; 
			fs_movim_ant.cod_movim=globals.zconf_cyb_cod_movim_egreso; 
			var found_ant=fs_movim_ant.search();
			if (found_ant == 0)
			{
				globals.DIALOGS.showWarningDialog('Aviso','No se encontró en movimientos el cheque a canjear','OK')
				iniciar();
				return false; 
			}
			if (found_ant != 1)
			{
				globals.DIALOGS.showWarningDialog('Aviso','Hay más de un movimiento para el cheque a canjear','OK')
				iniciar();
				return false;  // solo puede ser uno el mov. correspondiente
			}
		
			databaseManager.setAutoSave(false); // rever bien 
			forms.cheques_canje_2.controller.newRecord();
			//forms.cheques_canje_2.valor_id=5;  // 09/03/2012 puede 2 o 5 pedirlo
			forms.cheques_canje_2.importe=importe;  // del cheque anterior
			forms.cheques_canje_2.rec_detalle_id=rec_detalle_id;      // 16/03/2012
			forms.cheques_canje_2.op_detalle_id=op_detalle_id;  // 16/03/2012
		} 	
		elements.nro_desde.editable=false;       
		elements.f_valor_id.editable=false;         
		elements.f_cuentas_cyb_id.editable=false;  
		elements.f_banco_id.editable=false;    
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor, ingrese número de cheque','OK')
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"AC305520-F616-4609-8523-C323A9D0EE44"}
 * @AllowToRunInFind
 */
function confirmar() 
{
	var estado_save=validar_cheque_nuevo();
	if (estado_save==false)
		return false;
	
	//0)  poner estado cheque nuevo
	
	// forms.cheques_canje_2.estado=globals.zconf_chq_entregado_pago;  //2 va este estado? // la OP le pone estado globals.zconf_chq_emitido=5 ?? // 03/01/2011 anulado
	//**//forms.cheques_canje_2.estado=globals.zconf_chq_emitido;  //va 5  // 03/01/2011  // 07/03/2011 anulado
	if (forms.cheques_canje_2.cheques_to_valores.es_propio==1)  
		forms.cheques_canje_2.estado=globals.zconf_chq_emitido;        // 07/03/2011 en la O.P. : si es propio va 5
	else
		forms.cheques_canje_2.estado=globals.zconf_chq_entregado_pago; // 07/03/2011 en la O.P. : si es de terceros va 2
	
	//1)  cambiar estado cheque viejo
	estado=globals.zconf_chq_canjeado;  //8
	
	// definir foundset de chq_canjeado
	var fs_chq_canjeado=databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'chq_canjeado')
	fs_chq_canjeado.newRecord();
	fs_chq_canjeado.cheque_id=cheque_id;
	fs_chq_canjeado.concepto=forms.cheques_canje_2.concepto; 
	fs_chq_canjeado.solicitante=forms.cheques_canje_2.solicitante;
	fs_chq_canjeado.cheque_id_nuevo=forms.cheques_canje_2.cheque_id;  // 11/01/2011
	
	//2)  buscar movim_cyb anterior del cheque a canjear
	/*
	var fs_movim_ant=databaseManager.getFoundSet(controller.getServerName(),'movim_cyb')
	var estado_find=fs_movim_ant.find();
	if (estado_find==false)
		return false;

	fs_movim_ant.cheque_id=cheque_id; // basta con lo sig para identificar el mov.??????  comprobar
	var found=fs_movim_ant.search();
	if (found!=1)
		return false;  // solo puede ser uno el mov. correspondiente
	*/
	//  poner marca de conciliado en  movim_cyb anterior del cheque a canjear - se anuló : no debe conciliarlo
	//25/07/2011 se anularon las 2 lineas sgtes pues no debe conciliar los movimientos
	//25/07/2011fs_movim_ant.marca_conciliacion=1;  
	//25/07/2011fs_movim_ant.fecha_conciliacion=fecha_dia;
	
	// definir foundset de movim_cyb para los nuevos movims
	/** @type {JSFoundSet<db:/infocom/movim_cyb>}*/ 
	var fs_movim=databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'movim_cyb')
	
	//3)  nuevo movim_cyb  de anulacion de cheque /////////////////////////////////////
	fs_movim.newRecord();
	fs_movim.valor_id=fs_movim_ant.valor_id;	
	fs_movim.cheque_id=fs_movim_ant.cheque_id; 	
	fs_movim.cod_movim=globals.zconf_cyb_cod_movim_ingreso;  //1=Ingreso 2=Egreso ver solucion valuelist
	fs_movim.cuentas_cyb_id=fs_movim_ant.cuentas_cyb_id;
	fs_movim.empresa_id=fs_movim_ant.empresa_id;     
	fs_movim.fecha_movim=fecha_dia;   
	fs_movim.importe=fs_movim_ant.importe;
	fs_movim.imputacion_id=globals.zconf_cyb_imputacion_canje_cheques // 20=canje cheques  // 12/11/2013  
	fs_movim.concepto=forms.cheques_canje_2.concepto; 
	fs_movim.marca_conciliacion=0;  
	fs_movim.fecha_conciliacion=null; 
	fs_movim.referencia='Canje';
	fs_movim.moneda_id=fs_movim_ant.moneda_id; // ???
	
	//4)  nuevo movim_cyb  del cheque entregado ///////////////////////////////
	fs_movim.newRecord();
	fs_movim.valor_id=forms.cheques_canje_2.valor_id;	
	fs_movim.cheque_id=forms.cheques_canje_2.cheque_id; 	
	fs_movim.cod_movim=globals.zconf_cyb_cod_movim_egreso;     //1=Ingreso 2=Egreso ver solucion valuelist
	fs_movim.cuentas_cyb_id=forms.cheques_canje_2.cuentas_cyb_id;
	fs_movim.empresa_id=fs_movim_ant.empresa_id;  // del mov original
	fs_movim.fecha_movim=forms.cheques_canje_2.fecha_pago;   // pedida en pantalla
	fs_movim.importe=forms.cheques_canje_2.importe;   // debe ser igual el importe al anterior // ??
	fs_movim.imputacion_id=globals.zconf_cyb_imputacion_canje_cheques // 20=canje cheques // 12/11/2013
	fs_movim.concepto=forms.cheques_canje_2.concepto;
	fs_movim.marca_conciliacion=0;  
	fs_movim.fecha_conciliacion=null;
	fs_movim.referencia=forms.cheques_canje_2.cheque_nro;
	fs_movim.moneda_id=forms.cheques_canje_2.moneda_id;
	
	// salvar todo //////////////////////////////////////////////////////////
	estado_save=databaseManager.saveData();
	if (estado_save==true)
	{
		globals.DIALOGS.showInfoDialog('Canje de Cheques', 'Canje de Cheques nro. ' + cheque_nro + ' por ' + forms.cheques_canje_2.cheque_nro +' Generado correctamente' ,  "OK" )
		forms.cheques_canje_imp.controller.showPrintPreview(true);
		iniciar();
		elements.nro_desde.requestFocus();
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Canje de Cheques','Canje de Cheque No generado '  ,  "OK")
		cancelar()
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"06AC1D44-E491-4D52-863B-F5FDF368CD10"}
 */
function validar_cheque_nuevo() 
{
	if (forms.cheques_canje_2.cheque_nro==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar número de cheque','OK')
		return false;
	}
	if (forms.cheques_canje_2.valor_id==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar valor','OK')
		return false;
	}
	if (forms.cheques_canje_2.cuentas_cyb_id==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar cuenta','OK')
		return false;
	}
	if (forms.cheques_canje_2.importe==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar importe','OK')
		return false;
	}
	if (forms.cheques_canje_2.concepto==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto','OK')
		return false;
	}
	if (forms.cheques_canje_2.concepto.length < 10)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto con 10 caracteres por lo menos','OK')
		return false;
	}
	if (forms.cheques_canje_2.solicitante==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar solicitante','OK')
		return false;
	}
	if (forms.cheques_canje_2.solicitante.length < 10)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar solicitante con 10 caracteres por lo menos','OK')
		return false;
	}
	return true;
}

/**
 *
 * @properties={typeid:24,uuid:"002688FC-033C-4287-8F24-3AE257E798F5"}
 */
function cancelar() {
	databaseManager.revertEditedRecords();
	databaseManager.setAutoSave(false); 
	iniciar();
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"1234D9AB-A5E9-4A19-8128-1182EBBF590E"}
 */
function onDataChange_valor_id(oldValue, newValue, event) 
{ // 06/03/2011  
	if (f_valor_id==null)  // 07/03/2012
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar tipo de valor','OK')
		return false;
	}
 
	//if (forms.cheques_canje.cheques_to_valores.es_propio==1)  no puede id porque aun no leyo el cheque
	if (f_valor_id == 4 || f_valor_id == 5)   //  TODO 09/03/2012 parametrizar cheques propios  
	{	// es propio-> hablita cuenta
		elements.f_cuentas_cyb_id.enabled=true;
		elements.f_banco_id.enabled=false;
		elements.f_cuentas_cyb_id.requestFocus(false);
	}
	else
	{	// no es propio-> hablita banco
		elements.f_cuentas_cyb_id.enabled=false;
		elements.f_banco_id.enabled=true;
		elements.f_banco_id.requestFocus(true);
	}   
	return true;
}
